home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / PowerD / powerd / source / lib / powerd_lib.lha / PowerD / Val.ass < prev    next >
Text File  |  2001-05-31  |  4KB  |  263 lines

  1.     machine    mc68020
  2.     fpu    1
  3.  
  4. *******************************************************************************
  5. * name           offset
  6. * sign           -4
  7. * num            -8
  8. * args
  9. * s              12
  10. * n              8
  11.     xdef    _Val
  12. _Val
  13.     link    a5,#-8
  14.     move.l    d2,-(a7)
  15.     clr.l    (-8,a5)
  16.     move.l    #1,(-4,a5)
  17. while0
  18.     movea.l    (12,a5),a0
  19.     move.l    (8,a5),d2
  20.     move.b    (a0,d2.l*1),d1
  21.     andi.l    #255,d1
  22.     moveq    #9,d2
  23.     cmp.l    d2,d1
  24.     seq    d1
  25.     extb.l    d1
  26.     move.l    d1,d0
  27.     movea.l    (12,a5),a0
  28.     move.l    (8,a5),d2
  29.     move.b    (a0,d2.l*1),d1
  30.     andi.l    #255,d1
  31.     moveq    #10,d2
  32.     cmp.l    d2,d1
  33.     seq    d1
  34.     extb.l    d1
  35.     or.l    d1,d0
  36.     movea.l    (12,a5),a0
  37.     move.l    (8,a5),d2
  38.     move.b    (a0,d2.l*1),d1
  39.     andi.l    #255,d1
  40.     moveq    #32,d2
  41.     cmp.l    d2,d1
  42.     seq    d1
  43.     extb.l    d1
  44.     or.l    d1,d0
  45.     tst.l    d0
  46.     beq    end0
  47.     addq.l    #1,(8,a5)
  48.     bra    while0
  49. end0
  50. if1
  51.     movea.l    (12,a5),a0
  52.     move.l    (8,a5),d1
  53.     move.b    (a0,d1.l*1),d0
  54.     andi.l    #255,d0
  55.     moveq    #45,d1
  56.     cmp.l    d1,d0
  57.     bne    end1
  58.     move.l    #-1,(-4,a5)
  59.     addq.l    #1,(8,a5)
  60. end1
  61. if3
  62.     movea.l    (12,a5),a0
  63.     move.l    (8,a5),d1
  64.     move.b    (a0,d1.l*1),d0
  65.     andi.l    #255,d0
  66.     moveq    #37,d1
  67.     cmp.l    d1,d0
  68.     bne    elseif3_1
  69.     addq.l    #1,(8,a5)
  70. while5
  71.     movea.l    (12,a5),a0
  72.     move.l    (8,a5),d2
  73.     move.b    (a0,d2.l*1),d1
  74.     andi.l    #255,d1
  75.     moveq    #48,d2
  76.     cmp.l    d2,d1
  77.     seq    d1
  78.     extb.l    d1
  79.     move.l    d1,d0
  80.     movea.l    (12,a5),a0
  81.     move.l    (8,a5),d2
  82.     move.b    (a0,d2.l*1),d1
  83.     andi.l    #255,d1
  84.     moveq    #49,d2
  85.     cmp.l    d2,d1
  86.     seq    d1
  87.     extb.l    d1
  88.     or.l    d1,d0
  89.     tst.l    d0
  90.     beq    end5
  91.     move.l    (-8,a5),d0
  92.     lsl.l    #1,d0
  93.     move.l    d0,(-8,a5)
  94.     movea.l    (12,a5),a0
  95.     move.l    (8,a5),d1
  96.     move.b    (a0,d1.l*1),d0
  97.     andi.l    #255,d0
  98.     moveq    #48,d1
  99.     sub.l    d1,d0
  100.     or.l    d0,(-8,a5)
  101.     addq.l    #1,(8,a5)
  102.     bra    while5
  103. end5
  104.     bra    end3
  105. elseif3_1
  106.     movea.l    (12,a5),a0
  107.     move.l    (8,a5),d1
  108.     move.b    (a0,d1.l*1),d0
  109.     andi.l    #255,d0
  110.     moveq    #36,d1
  111.     cmp.l    d1,d0
  112.     bne    elseif3_2
  113.     addq.l    #1,(8,a5)
  114. while8
  115.     movea.l    (12,a5),a0
  116.     move.l    (8,a5),d2
  117.     move.b    (a0,d2.l*1),d1
  118.     andi.l    #255,d1
  119.     moveq    #48,d2
  120.     cmp.l    d2,d1
  121.     sge    d1
  122.     extb.l    d1
  123.     move.l    d1,d0
  124.     movea.l    (12,a5),a0
  125.     move.l    (8,a5),d2
  126.     move.b    (a0,d2.l*1),d1
  127.     andi.l    #255,d1
  128.     moveq    #57,d2
  129.     cmp.l    d2,d1
  130.     sle    d1
  131.     extb.l    d1
  132.     and.l    d1,d0
  133.     tst.l    d0
  134.     beq    elsewhile8_1
  135.     move.l    (-8,a5),d0
  136.     lsl.l    #4,d0
  137.     move.l    d0,(-8,a5)
  138.     movea.l    (12,a5),a0
  139.     move.l    (8,a5),d1
  140.     move.b    (a0,d1.l*1),d0
  141.     andi.l    #255,d0
  142.     moveq    #48,d1
  143.     sub.l    d1,d0
  144.     or.l    d0,(-8,a5)
  145.     bra    always8
  146. elsewhile8_1
  147.     movea.l    (12,a5),a0
  148.     move.l    (8,a5),d2
  149.     move.b    (a0,d2.l*1),d1
  150.     andi.l    #255,d1
  151.     moveq    #97,d2
  152.     cmp.l    d2,d1
  153.     sge    d1
  154.     extb.l    d1
  155.     move.l    d1,d0
  156.     movea.l    (12,a5),a0
  157.     move.l    (8,a5),d2
  158.     move.b    (a0,d2.l*1),d1
  159.     andi.l    #255,d1
  160.     moveq    #102,d2
  161.     cmp.l    d2,d1
  162.     sle    d1
  163.     extb.l    d1
  164.     and.l    d1,d0
  165.     tst.l    d0
  166.     beq    elsewhile8_2
  167.     move.l    (-8,a5),d0
  168.     lsl.l    #4,d0
  169.     move.l    d0,(-8,a5)
  170.     movea.l    (12,a5),a0
  171.     move.l    (8,a5),d1
  172.     move.b    (a0,d1.l*1),d0
  173.     andi.l    #255,d0
  174.     moveq    #97,d1
  175.     sub.l    d1,d0
  176.     moveq    #10,d1
  177.     add.l    d1,d0
  178.     or.l    d0,(-8,a5)
  179.     bra    always8
  180. elsewhile8_2
  181.     movea.l    (12,a5),a0
  182.     move.l    (8,a5),d2
  183.     move.b    (a0,d2.l*1),d1
  184.     andi.l    #255,d1
  185.     moveq    #65,d2
  186.     cmp.l    d2,d1
  187.     sge    d1
  188.     extb.l    d1
  189.     move.l    d1,d0
  190.     movea.l    (12,a5),a0
  191.     move.l    (8,a5),d2
  192.     move.b    (a0,d2.l*1),d1
  193.     andi.l    #255,d1
  194.     moveq    #70,d2
  195.     cmp.l    d2,d1
  196.     sle    d1
  197.     extb.l    d1
  198.     and.l    d1,d0
  199.     tst.l    d0
  200.     beq    end8
  201.     move.l    (-8,a5),d0
  202.     lsl.l    #4,d0
  203.     move.l    d0,(-8,a5)
  204.     movea.l    (12,a5),a0
  205.     move.l    (8,a5),d1
  206.     move.b    (a0,d1.l*1),d0
  207.     andi.l    #255,d0
  208.     moveq    #65,d1
  209.     sub.l    d1,d0
  210.     moveq    #10,d1
  211.     add.l    d1,d0
  212.     or.l    d0,(-8,a5)
  213. always8
  214.     addq.l    #1,(8,a5)
  215.     bra    while8
  216. end8
  217.     bra    end3
  218. elseif3_2
  219. while14
  220.     movea.l    (12,a5),a0
  221.     move.l    (8,a5),d2
  222.     move.b    (a0,d2.l*1),d1
  223.     andi.l    #255,d1
  224.     moveq    #48,d2
  225.     cmp.l    d2,d1
  226.     sge    d1
  227.     extb.l    d1
  228.     move.l    d1,d0
  229.     movea.l    (12,a5),a0
  230.     move.l    (8,a5),d2
  231.     move.b    (a0,d2.l*1),d1
  232.     andi.l    #255,d1
  233.     moveq    #57,d2
  234.     cmp.l    d2,d1
  235.     sle    d1
  236.     extb.l    d1
  237.     and.l    d1,d0
  238.     tst.l    d0
  239.     beq    end14
  240.     move.l    (-8,a5),d0
  241.     muls.l    #10,d0
  242.     move.l    d0,(-8,a5)
  243.     movea.l    (12,a5),a0
  244.     move.l    (8,a5),d1
  245.     move.b    (a0,d1.l*1),d0
  246.     andi.l    #255,d0
  247.     moveq    #48,d1
  248.     sub.l    d1,d0
  249.     add.l    d0,(-8,a5)
  250.     addq.l    #1,(8,a5)
  251.     bra    while14
  252. end14
  253. end3
  254. Valend
  255.     move.l    (-8,a5),d0
  256.     muls.l    (-4,a5),d0
  257.     move.l    (8,a5),d1
  258. Valfinish
  259.     move.l    (a7)+,d2
  260.     unlk    a5
  261.     rts
  262.     section    ".tocd",data
  263.